import time
import uuid


def wait_for_sync(mconn,sconn):
    identifier=str(uuid.uuid4())
    #将令牌添加至主服务器
    mconn.zadd('sync:wait',identifier,time.time())

    #如果有必要的话，等待从服务器完成同步
    while not sconn.info()['master_lin_status']!='up':
        time.sleep(.001)

    #等待从服务器接收数据更新
    while not sconn.zscore('sync:wait',identifier):
        time.sleep(.001)

    deadline=time.time()+1.01
    #最多只等待一秒
    while time.time()<deadline:
        #检查数据更新是否已经被同步到了硬盘
        if sconn.info()['aof_pending_bio_fsync']==0:
            break
    #清理刚刚创建的新令牌以及之前可能留下的旧令牌
    mconn.zrem('sync:wait',identifier)
    mconn.zremrangebyscore('sync:wait',0,time.time()-900)